using System.Collections.Generic;
using System.ServiceModel;


namespace ibba.src.noriskbo
{
    public interface Subject
    {
        void Update(System.Collections.Generic.List<ServiceEnquadramentoDuplex.EnquadramentoOperacao> pValor);
    }

    [CallbackBehavior()] 
    public class EnquadramentoOperacaoCallback: ServiceEnquadramentoDuplex.IEnquadramentoOperacaoDuplexCallback
    {
        private List<Subject> _observers;
        private static readonly EnquadramentoOperacaoCallback _instancia = new EnquadramentoOperacaoCallback();

        private EnquadramentoOperacaoCallback()
        {
            _observers = new List<Subject>();
        }

        public static EnquadramentoOperacaoCallback GetInstance
        {
            get {return (_instancia);}
        }

        public  void AddObserver(Subject pSubject)
        {
            _observers.Add(pSubject);
        }

        #region IEnquadramentoOperacaoCallback Members

        public void NotificarAlteracaoValor(ServiceEnquadramentoDuplex.EnquadramentoOperacao pValor)
        { }

        public void NotificarAlteracaoValores(System.Collections.Generic.List<ServiceEnquadramentoDuplex.EnquadramentoOperacao> pValor)
        {
            _observers.ForEach(a => a.Update(pValor));
        }

        #endregion
    }
       
}
